package DP.prototype;

/**
 * @author msi
 * 浅拷贝测试类
 */
public class ShallowCopyTest {
    public static void main(String[] args) {
        //产生一个对象
        ShallowCopy shallowCopy=new ShallowCopy();
        //设置一个值
        shallowCopy.setValue("zs");
        //拷贝一个对象
        ShallowCopy clone = (ShallowCopy) shallowCopy.clone();
        clone.setValue("ls");
        System.out.println(shallowCopy.getValue());//[zs, ls]
        /**
         * 我们注意到这个list的值为zs ls，为什么会有两个值呢？
         * 这是因为java做了一个偷懒的拷贝动作，Object类提供的clone方法只拷贝本对象，不会拷贝对戏内部的数组，引用对象等都不拷贝。这种拷贝就是浅拷贝。
         * 也就是这种浅拷贝只会拷贝基本数据类型和String类型，其他的类型不会拷贝。
         * 我们将这个类的list对象也调用clone方法拷贝，就是深拷贝了。
         */
    }
}
